package com.nanhai.buddhist.college.module.study.dal.dataobject.studyplan;

import com.github.yulichang.annotation.EntityMapping;
import com.github.yulichang.annotation.FieldMapping;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import java.util.*;
import com.baomidou.mybatisplus.annotation.*;
import com.nanhai.buddhist.college.framework.mybatis.core.dataobject.BaseDO;

/**
 * 教学计划 DO
 *
 * @author xqenzo@163.com
 */
@TableName("t_study_plan")
@KeySequence("t_study_plan_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StudyPlanDO extends BaseDO {

    /**
     * 主键
     */
    @TableId(type = IdType.ASSIGN_UUID)
    private String id;
    /**
     * 学院
     */
    private String collegesId;
    /**
     * 学年
     *
     * 枚举  school_year 对应的类
     */
    private Integer schoolYear;
    /**
     * 学期
     *
     * 枚举 college_semester_status 对应的类
     */
    private Integer semester;
    /**
     * 层级
     *
     * 枚举 student_training_level 对应的类
     */
    private Integer hierarchy;
    /**
     * 年级
     *
     * 枚举 clsss_properties 对应的类
     */
    private Integer classesGrade;
    /**
     * 备注
     */
    private String remark;
    /**
     * 状态： 0-启用 1-禁用
     *
     * 枚举
     */
    private Integer status;
    /**
     * 开始学年
      */
    private Integer startStudyYear;
    /**
     * 结束学年
     */
    private Integer endStudyYear;
    /**
     * 第一学期开始时间
     */
    private Date oneStartTime;
    /**
     * 第一学期结束时间
     */
    private Date oneEndTime;
    /**
     * 第一学期总周数
     */
    private Integer oneWeekCount;
    /**
     * 第二学期开始时间
     */
    private Date towStartTime;
    /**
     * 第二学期结束时间
     */
    private Date towEndTime;
    /**
     * 第二学期总周数
     */
    private Integer towWeekCount;
    /**
     * 周数配置
     */
    private Integer weekConfig;



    //----------------------------------


    @TableField(exist = false)
    @EntityMapping(thisField = "id",joinField = "studyPlanId")
    private List<StudyPlanTeacherDO> teacherDOList;

    @TableField(exist = false)
    @EntityMapping(thisField = "id",joinField = "studyPlanId")
    private List<StudyPlanSubjectDO> subjectDOList;

    /**
     * 教学计划教师集合
     */
    @TableField(exist = false)
    private List<String> teacherIds;


    /**
     * 教学计划课程集合
     */
    @TableField(exist = false)
    private List<String> subjectIds;

}
